Reactã®å®éšçãªexperimental_Offscreen APIã«ããããã¯ã°ã©ãŠã³ãã¬ã³ããªã³ã°ãæ¢ããè€éãªReactã¢ããªã±ãŒã·ã§ã³ã§ããã©ãŒãã³ã¹ãUXãåäžãããäœæã¬ã€ãã³ã·ãåæžããæ¹æ³ã解説ããŸããå®è£ ããã¹ããã©ã¯ãã£ã¹ããŠãŒã¹ã±ãŒã¹ãç¶²çŸ ããã¬ã€ãã§ãã
React experimental_Offscreenå®è£ ïŒããã©ãŒãã³ã¹åäžã®ããã®ããã¯ã°ã©ãŠã³ãã¬ã³ããªã³ã°
çµ¶ããé²åããWebéçºã®äžçã«ãããŠãããã©ãŒãã³ã¹ã®æé©åã¯äŸç¶ãšããŠéèŠãªèª²é¡ã§ãããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãæ§ç¯ããããã®äººæ°ã®JavaScriptã©ã€ãã©ãªã§ããReactã¯ãexperimental_Offscreenãšããå®éšçãªAPIãå°å
¥ããŸãããããã¯ãããã¯ã°ã©ãŠã³ãã¬ã³ããªã³ã°ã掻çšããããšã§ããã©ãŒãã³ã¹ã倧å¹
ã«åäžãããããšãæåŸ
ãããŠããŸãããã®å
æ¬çãªã¬ã€ãã§ã¯ãexperimental_Offscreenã®è€éãªè©³çްãæãäžãããã®å©ç¹ãå®è£
ã®è©³çްãããã³æœåšçãªãŠãŒã¹ã±ãŒã¹ãæ¢ããŸãã
ã³ã¢ã³ã³ã»ããã®çè§£ïŒããã¯ã°ã©ãŠã³ãã¬ã³ããªã³ã°
Reactã®åŸæ¥ã®ã¬ã³ããªã³ã°ã¯åæçã«è¡ãããŸããã³ã³ããŒãã³ãã®ããŒã¿ã倿ŽããããšãReactã¯ãã®ã³ã³ããŒãã³ããšãã®åèŠçŽ ãåã¬ã³ããªã³ã°ããç¹ã«è€éãªã¢ããªã±ãŒã·ã§ã³ã§ã¯ããã©ãŒãã³ã¹ã®ããã«ããã¯ã«ã€ãªããå¯èœæ§ããããŸããäžæ¹ãããã¯ã°ã©ãŠã³ãã¬ã³ããªã³ã°ã§ã¯ãReactã¯ã¡ã€ã³ã¹ã¬ããããããã¯ããããšãªããããã¯ã°ã©ãŠã³ãã§ã³ã³ããŒãã³ãã®æŽæ°ãããç¶æ ãæºåã§ããŸããããã«ãããã³ã¹ãã®ãããã¬ã³ããªã³ã°æäœãè¡ãããŠããéãããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ã®å¿çæ§ãç¶æãããŸãã
experimental_Offscreen APIã¯ãReactã«å¯ŸããŠã³ã³ããŒãã³ãïŒãŸãã¯ã³ã³ããŒãã³ãã®ãµãããªãŒïŒããªãã¹ã¯ãªãŒã³ãã€ãŸãå¥ã®ã¬ã³ããªã³ã°ã³ã³ããã¹ãã§ã¬ã³ããªã³ã°ããããæç€ºããã¡ã«ããºã ãæäŸããŸãããã®ãªãã¹ã¯ãªãŒã³ã¬ã³ããªã³ã°ã¯ã衚瀺ãããŠãããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ã«ããã«ã¯åœ±é¿ããŸããããªãã¹ã¯ãªãŒã³ã§ã®ã¬ã³ããªã³ã°ãå®äºãããšãæŽæ°ãããã³ã³ãã³ããã·ãŒã ã¬ã¹ã«è¡šç€ºã«ã¹ã¯ããã§ããããã¹ã ãŒãºã§å¿çæ§ã®é«ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãå®çŸããŸããããã¯ãéãèšç®ãããŒã¿ãã§ããããŸãã¯è€éãªã¢ãã¡ãŒã·ã§ã³ã䌎ãã³ã³ããŒãã³ãã«ãšã£ãŠç¹ã«äŸ¡å€ããããŸãã
experimental_Offscreenã䜿çšããäž»ãªå©ç¹
- äœæããã©ãŒãã³ã¹ã®åäžïŒ ããã¯ã°ã©ãŠã³ãã§ã³ã³ããŒãã³ããã¬ã³ããªã³ã°ããããšã«ããã
experimental_Offscreenã¯äœæã¬ã€ãã³ã·ãåæžããèšç®éã®å€ãã¿ã¹ã¯äžã§ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãé ãæããã®ãé²ããŸãã - å¿çæ§ã®åäžïŒ ã¡ã€ã³ã¹ã¬ããããããã¯ãããªãããããŠãŒã¶ãŒã®æäœãè¿ éã«åŠçãããã¢ããªã±ãŒã·ã§ã³ã®å¿çæ§ãç¶æãããŸãã
- ãžãã¿ãŒã®åæžïŒ ããã¯ã°ã©ãŠã³ãã¬ã³ããªã³ã°ã¯ãžãã¿ãŒããã¬ãŒã ãããããæå°éã«æããããã¹ã ãŒãºãªã¢ãã¡ãŒã·ã§ã³ãšãã©ã³ãžã·ã§ã³ãå®çŸããŸãã
- ãªãœãŒã¹å©çšã®æé©åïŒ å¿
èŠãªå Žåã«ã®ã¿ã³ã³ããŒãã³ããã¬ã³ããªã³ã°ããèšç®ãããã¯ã°ã©ãŠã³ãã«ãªãããŒãããããšã§ã
experimental_Offscreenã¯ãªãœãŒã¹å©çšãšããããªãŒå¯¿åœãæ¹åã§ããŸãïŒç¹ã«ã¢ãã€ã«ããã€ã¹ã§ïŒã - ã·ãŒã ã¬ã¹ãªãã©ã³ãžã·ã§ã³ïŒ æŽæ°ãããã³ã³ãã³ãããªãã¹ã¯ãªãŒã³ã§æºåããæ©èœã«ãããç°ãªãç¶æ ããã¥ãŒéã®ã·ãŒã ã¬ã¹ãªãã©ã³ãžã·ã§ã³ãå¯èœã«ãªããå šäœçãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžããŸãã
experimental_Offscreenã®å®è£
å®è£
ã«å
¥ãåã«ãexperimental_Offscreenã¯ååã瀺ãéãããŸã å®éšçãªãã®ã§ããããšãçè§£ããããšãéèŠã§ããããã¯ãAPIã倿Žãããå¯èœæ§ããããååãªãã¹ããšæ
éãªæ€èšãªãã«æ¬çªç°å¢ã§ã®äœ¿çšã«ã¯é©ããŠããªãå¯èœæ§ãããããšãæå³ããŸããããã䜿çšããã«ã¯ãéåžžãå®éšçæ©èœããµããŒãããReactã®ããŒãžã§ã³ãå¿
èŠã§ãããã³ã³ã«ã¬ã³ãã¢ãŒããæå¹ã«ããå¿
èŠããããŸãã
åºæ¬çãªäœ¿çšæ³
experimental_Offscreenã䜿çšããåºæ¬çãªæ¹æ³ã¯ãããã¯ã°ã©ãŠã³ãã§ã¬ã³ããªã³ã°ãããã³ã³ããŒãã³ãã<Offscreen>ã³ã³ããŒãã³ãã§ã©ããããããšã§ããreactããã±ãŒãžããã€ã³ããŒãããå¿
èŠããããŸãã
import { Offscreen } from 'react';
function MyComponent() {
return (
<Offscreen mode="visible">
<ExpensiveComponent />
</Offscreen>
);
}
ãã®äŸã§ã¯ã<ExpensiveComponent />ã¯ãªãã¹ã¯ãªãŒã³ã§ã¬ã³ããªã³ã°ãããŸããmodeããããã£ã¯ãã³ã³ãã³ããæåã«è¡šç€ºããããé衚瀺ã«ãªãããå¶åŸ¡ããŸãã
modeããããã£
modeããããã£ã¯ã<Offscreen>ã³ã³ããŒãã³ãã®å¯èŠæ§ãšã¬ã³ããªã³ã°åäœãå¶åŸ¡ããããã«äžå¯æ¬ ã§ãã2ã€ã®å¯èœãªå€ãåãå
¥ããŸãïŒ
"visible"ïŒ<Offscreen>ã³ã³ããŒãã³ãå ã®ã³ã³ãã³ãã¯ã¬ã³ããªã³ã°ãããããã«è¡šç€ºãããŸããå éšçã«ã¯ã³ã³ã«ã¬ã³ãã¬ã³ããªã³ã°ã®æ©æµãåãããããããŸããããåæã®éè¡šç€ºãæºåãã§ãŒãºã¯ãããŸããã"hidden"ïŒ<Offscreen>ã³ã³ããŒãã³ãå ã®ã³ã³ãã³ãã¯ãªãã¹ã¯ãªãŒã³ã§ã¬ã³ããªã³ã°ãããåæç¶æ ã§ã¯è¡šç€ºãããŸãããmodeããããã£ãæç€ºçã«"visible"ã«å€æŽãããŸã§é衚瀺ã®ãŸãŸã§ãããããããã¯ã°ã©ãŠã³ãã¬ã³ããªã³ã°ã®å žåçãªãŠãŒã¹ã±ãŒã¹ã§ãã
Reactã®stateã䜿çšããŠmodeããããã£ãåçã«å¶åŸ¡ããç¹å®ã®æ¡ä»¶ããŠãŒã¶ãŒã®æäœã«åºã¥ããŠãªãã¹ã¯ãªãŒã³ã³ã³ãã³ãã衚瀺ã»é衚瀺ã«ããããšãã§ããŸãã
import { useState } from 'react';
import { Offscreen } from 'react';
function MyComponent() {
const [isVisible, setIsVisible] = useState(false);
return (
<>
<button onClick={() => setIsVisible(true)}>Show Content</button>
<Offscreen mode={isVisible ? "visible" : "hidden"}>
<ExpensiveComponent />
</Offscreen>
<>
);
}
ãã®äŸã§ã¯ã<ExpensiveComponent />ã¯æåã«ãªãã¹ã¯ãªãŒã³ã§ã¬ã³ããªã³ã°ãããŸãïŒmode="hidden"ïŒããŠãŒã¶ãŒããã¿ã³ãã¯ãªãã¯ãããšãisVisibleã®ç¶æ
ãtrueã«èšå®ãããmodeããããã£ã"visible"ã«å€ããããªãã¹ã¯ãªãŒã³ã³ã³ãã³ãã衚瀺ãããŸãã
Suspenseãšã®é«åºŠãªäœ¿çšæ³
experimental_Offscreenã¯React Suspenseãšã·ãŒã ã¬ã¹ã«çµ±åããèªã¿èŸŒã¿ç¶æ
ãéåæããŒã¿ãã§ãããããåªé
ã«åŠçããããšãã§ããŸãã<Offscreen>ã³ã³ããŒãã³ãã<Suspense>ã³ã³ããŒãã³ãã§ã©ããããããšã§ãã³ã³ãã³ããããã¯ã°ã©ãŠã³ãã§æºåãããŠããéã«ãã©ãŒã«ããã¯UIã衚瀺ã§ããŸãã
import { Suspense } from 'react';
import { Offscreen } from 'react';
function MyComponent() {
return (
<Suspense fallback={<p>Loading...</p>}>
<Offscreen mode="hidden">
<ExpensiveComponent />
</Offscreen>
</Suspense>
);
}
ãã®äŸã§ã¯ã<ExpensiveComponent />ããªãã¹ã¯ãªãŒã³ã§ã¬ã³ããªã³ã°ãããŠããéã<p>Loading...</p>ãšãããã©ãŒã«ããã¯ã衚瀺ãããŸãããªãã¹ã¯ãªãŒã³ã§ã®ã¬ã³ããªã³ã°ãå®äºãããšã<ExpensiveComponent />ããã©ãŒã«ããã¯UIã眮ãæããŸãã
æŽæ°ãšåã¬ã³ããªã³ã°ã®åŠç
<ExpensiveComponent />ãäŸåããããŒã¿ã倿ŽããããšãReactã¯èªåçã«ããããªãã¹ã¯ãªãŒã³ã§åã¬ã³ããªã³ã°ããŸããæŽæ°ãããã³ã³ãã³ãã¯ããã¯ã°ã©ãŠã³ãã§æºåãããmodeããããã£ã"visible"ã«èšå®ããããšãæŽæ°ãããã³ã³ãã³ããã·ãŒã ã¬ã¹ã«ã¹ã¯ããã€ã³ãããŸãã
experimental_Offscreenã®ãŠãŒã¹ã±ãŒã¹
experimental_Offscreenã¯ãã¬ã³ããªã³ã°ã«èšç®ã³ã¹ããããããããŒã¿ãã§ããã䌎ãããŸãã¯ããã«ã¯è¡šç€ºãããªããäºåã«æºåããŠããå¿
èŠãããã³ã³ããŒãã³ããããã·ããªãªã§ç¹ã«åœ¹ç«ã¡ãŸãã以äžã«äžè¬çãªãŠãŒã¹ã±ãŒã¹ãããã€ã瀺ããŸãïŒ
- ã¿ãä»ãã€ã³ã¿ãŒãã§ãŒã¹ïŒ éã¢ã¯ãã£ããªã¿ãã®ã³ã³ãã³ããããã¯ã°ã©ãŠã³ãã§äºåã«ã¬ã³ããªã³ã°ããŠããããšã§ããŠãŒã¶ãŒãå¥ã®ã¿ãã«åãæ¿ãããšãã«ãã³ã³ãã³ããæ¢ã«æºåãããŠããå³åº§ã«è¡šç€ºãããŸããããã«ãããç¹ã«ã¿ãã«è€éãªããŒã¿ãèŠèŠåãå«ãŸããŠããå Žåãã¿ãä»ãã€ã³ã¿ãŒãã§ãŒã¹ã®äœæããã©ãŒãã³ã¹ãåçã«åäžããŸããåã¿ããç°ãªããã£ãŒããããŒãã«ã衚瀺ããéèããã·ã¥ããŒããæ³åããŠã¿ãŠãã ããã
experimental_Offscreenã䜿çšãããšãéã¢ã¯ãã£ããªã¿ãã®ãã£ãŒããäºåã«ã¬ã³ããªã³ã°ã§ãããŠãŒã¶ãŒãã¿ãéãç§»åããéã®ã¹ã ãŒãºãªãã©ã³ãžã·ã§ã³ãä¿èšŒããŸãã - å€§èŠæš¡ãªãªã¹ããšã°ãªããïŒ å€§èŠæš¡ãªãªã¹ããã°ãªããã§çŸåšè¡šç€ºãããŠããªãã¢ã€ãã ã®ã³ã³ãã³ãããªãã¹ã¯ãªãŒã³ã§ã¬ã³ããªã³ã°ããŠããããšã§ããŠãŒã¶ãŒãã¹ã¯ããŒã«ãããšãã«ãæ°ããã¢ã€ãã ãæ¢ã«æºåãããŠããé å»¶ãªã衚瀺ã§ããŸããããã¯ãäžåºŠã«ããŒã¿ã®äžéšã®ã¿ãã¬ã³ããªã³ã°ããä»®æ³åããããªã¹ããã°ãªããã§ç¹ã«å¹æçã§ããäœçŸãã®ååã衚瀺ããeã³ããŒã¹ãµã€ããèããŠã¿ãŠãã ããããŠãŒã¶ãŒãã¹ã¯ããŒã«ããã«ã€ããŠåå詳现ããªãã¹ã¯ãªãŒã³ã§ã¬ã³ããªã³ã°ããããšã§ãããæµåçãªãã©ãŠãžã³ã°äœéšãäœãåºãããšãã§ããŸãã
- è€éãªã¢ãã¡ãŒã·ã§ã³ãšãã©ã³ãžã·ã§ã³ïŒ ã¢ãã¡ãŒã·ã§ã³ããã©ã³ãžã·ã§ã³ã®æ¬¡ã®ç¶æ
ããªãã¹ã¯ãªãŒã³ã§æºåããŠããããšã§ãã¢ãã¡ãŒã·ã§ã³ããã©ã³ãžã·ã§ã³ãããªã¬ãŒããããšãã«ããžãã¿ãŒããã¬ãŒã ãããããåŒãèµ·ããããšãªãã¹ã ãŒãºã«å®è¡ã§ããŸããããã¯ãè€éãªèšç®ãããŒã¿æäœã䌎ãã¢ãã¡ãŒã·ã§ã³ã«ãšã£ãŠç¹ã«éèŠã§ããè€éãªããŒãžãã©ã³ãžã·ã§ã³ãæã€ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãèããŠã¿ãŠãã ããã
experimental_Offscreenã䜿çšãããšãé·ç§»å ã®ããŒãžãäºåã«ã¬ã³ããªã³ã°ã§ãããã©ã³ãžã·ã§ã³ãã·ãŒã ã¬ã¹ãã€ç¬æã«èŠããããã«ãªããŸãã - ããŒã¿ã®ããªãã§ããïŒãŸã 衚瀺ãããŠããªãããè¿ããã¡ã«å¿ èŠã«ãªãå¯èœæ§ãé«ãã³ã³ããŒãã³ãã®ããŒã¿ãã§ãããéå§ããŸããããŒã¿ããã§ããããããšãã³ã³ããŒãã³ãã¯ãªãã¹ã¯ãªãŒã³ã§ã¬ã³ããªã³ã°ããã衚瀺ãããããã«ãªã£ããšãã«å³åº§ã«è¡šç€ºã§ããŸããããã«ãããäœæçãªèªã¿èŸŒã¿æéãççž®ããããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãå€§å¹ ã«åäžããŸããäŸãã°ããœãŒã·ã£ã«ã¡ãã£ã¢ãã©ãããã©ãŒã ã§ã¯ããŠãŒã¶ãŒã®ãã£ãŒãã®æ¬¡ã®ããã€ãã®æçš¿ã®ããŒã¿ãããªãã§ãããããªãã¹ã¯ãªãŒã³ã§ã¬ã³ããªã³ã°ããŠããããšã§ããŠãŒã¶ãŒãã¹ã¯ããŒã«ãããšãã«ããã«è¡šç€ºã§ããããã«ããŸãã
- é衚瀺ã³ã³ããŒãã³ãïŒ æåã¯é衚瀺ã«ãªã£ãŠããã³ã³ããŒãã³ãïŒäŸïŒã¢ãŒãã«ãããããããŠã³å ïŒããªãã¹ã¯ãªãŒã³ã§ã¬ã³ããªã³ã°ããŠããããšã§ããããã衚瀺ããããšãã«ãæ¢ã«æºåãã§ããŠããå³åº§ã«è¡šç€ºã§ããŸããããã«ããããŠãŒã¶ãŒãã³ã³ããŒãã³ããæäœãããšãã®é¡èãªé å»¶ãåé¿ã§ããŸããæåã¯é衚瀺ã«ãªã£ãŠããèšå®ããã«ãæ³åããŠã¿ãŠãã ãããããããªãã¹ã¯ãªãŒã³ã§ã¬ã³ããªã³ã°ããããšã§ããŠãŒã¶ãŒãèšå®ã¢ã€ã³ã³ãã¯ãªãã¯ãããšãã«å³åº§ã«è¡šç€ºãããããšãä¿èšŒã§ããŸãã
experimental_Offscreenã䜿çšããããã®ãã¹ããã©ã¯ãã£ã¹
experimental_Offscreenã广çã«æŽ»çšãããã®å©ç¹ãæå€§éã«åŒãåºãããã«ã以äžã®ãã¹ããã©ã¯ãã£ã¹ãèæ
®ããŠãã ããïŒ
- ããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ããïŒ ãããã¡ã€ãªã³ã°ããŒã«ã䜿çšããŠãã¢ããªã±ãŒã·ã§ã³ã§ããã©ãŒãã³ã¹ã®ããã«ããã¯ãåŒãèµ·ãããŠããã³ã³ããŒãã³ããç¹å®ããŸãããŸãã¯ãããã®ã³ã³ããŒãã³ãã«
experimental_Offscreenã䜿çšããããšã«éäžããŠãã ããã - ããã©ãŒãã³ã¹ã枬å®ããïŒ
experimental_Offscreenãå®è£ ããååŸã§ã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ã枬å®ããå®éã«æ¹åãããŠããããšã確èªããŸãããã¬ãŒã ã¬ãŒããã¬ã³ããªã³ã°æéãã€ã³ã¿ã©ã¯ãã£ãã«ãªããŸã§ã®æéïŒTTIïŒãªã©ã®ã¡ããªã¯ã¹ã䜿çšããŸãã - é床ãªäœ¿çšãé¿ããïŒ
experimental_Offscreenã䜿ããããªãã§ãã ãããããŸãã«ãå€ãã®ã³ã³ããŒãã³ãããªãã¹ã¯ãªãŒã³ã§ã¬ã³ããªã³ã°ãããšãéå°ãªãªãœãŒã¹ãæ¶è²»ããããã©ãŒãã³ã¹ãäœäžãããå¯èœæ§ããããŸããæãããã©ãŒãã³ã¹ãéèŠãªã³ã³ããŒãã³ãã«çŠç¹ãåœãŠãŠãè³¢ã䜿çšããŠãã ããã - ã¡ã¢ãªäœ¿çšéãèæ ®ããïŒ ãªãã¹ã¯ãªãŒã³ã¬ã³ããªã³ã°ã¯ã¡ã¢ãªäœ¿çšéãå¢å ãããå¯èœæ§ããããŸããã¢ããªã±ãŒã·ã§ã³ã®ã¡ã¢ãªäœ¿çšéãç£èŠãã蚱容ç¯å²å ã«åãŸã£ãŠããããšã確èªããŠãã ããã
- 培åºçã«ãã¹ãããïŒ
experimental_Offscreenã¯å®éšçãªAPIã§ãããããç°ãªãããã€ã¹ããã©ãŠã¶ã§ã¢ããªã±ãŒã·ã§ã³ã培åºçã«ãã¹ãããæåŸ éãã«åäœããããšã確èªããããšãéèŠã§ãã - APIã®å€æŽã«æ³šæããïŒ ææ°ã®ReactãªãªãŒã¹ãåžžã«ææ¡ãã
experimental_OffscreenAPIãé²åããã«ã€ããŠã³ãŒããé©å¿ãããæºåãããŠãããŠãã ããã - Reactã³ã³ã«ã¬ã³ãã¢ãŒããšå
±ã«äœ¿çšããïŒ
experimental_Offscreenã¯Reactã³ã³ã«ã¬ã³ãã¢ãŒããšã·ãŒã ã¬ã¹ã«é£æºããããã«èšèšãããŠããŸããããã¯ã°ã©ãŠã³ãã¬ã³ããªã³ã°ã®å©ç¹ãæå€§éã«äº«åããããã«ãã¢ããªã±ãŒã·ã§ã³ãã³ã³ã«ã¬ã³ãã¢ãŒãã䜿çšããŠããããšã確èªããŠãã ããã - DevToolsã§ãããã¡ã€ã«ããïŒ React DevToolsãæŽ»çšããŠã³ã³ããŒãã³ãããããã¡ã€ã«ãã
experimental_Offscreenãã¬ã³ããªã³ã°ããã©ãŒãã³ã¹ã«ã©ã®ããã«åœ±é¿ããŠããããçè§£ããŸããããã«ãããæœåšçãªåé¡ãç¹å®ããå®è£ ãæé©åããã®ã«åœ¹ç«ã¡ãŸãã
æœåšçãªèª²é¡ãšèæ ®äºé
experimental_Offscreenã¯å€§ããªããã©ãŒãã³ã¹äžã®å©ç¹ãæäŸããŸãããæœåšçãªèª²é¡ãšèæ
®äºé
ãèªèããããšãéèŠã§ãïŒ
- å®éšçãªæ§è³ªïŒ APIã¯å®éšçã§ããããã倿Žãããå¯èœæ§ããããå®å®ããŠããªããããããŸãããããã¯ãå°æ¥ã®ReactãªãªãŒã¹ã§ã³ãŒãã®ä¿®æ£ãå¿ èŠã«ãªãå¯èœæ§ãããããšãæå³ããŸãã
- è€éæ§ã®å¢å ïŒ
experimental_Offscreenãå®è£ ãããšãã³ãŒãããŒã¹ãè€éã«ãªãå¯èœæ§ããããŸããå®è£ ãæ éã«èšç»ããæ°ããªãã°ããªã°ã¬ãã·ã§ã³ãå°å ¥ããªãããã«ããããšãéèŠã§ãã - ã¡ã¢ãªãªãŒããŒãããïŒ ãªãã¹ã¯ãªãŒã³ã¬ã³ããªã³ã°ã¯ãç¹ã«å€§èŠæš¡ãŸãã¯è€éãªã³ã³ããŒãã³ããã¬ã³ããªã³ã°ããå Žåãã¡ã¢ãªäœ¿çšéãå¢å ãããå¯èœæ§ããããŸããã¢ããªã±ãŒã·ã§ã³ã®ã¡ã¢ãªäœ¿çšéãç£èŠããå®è£ ãæé©åããŠã¡ã¢ãªãªãŒããŒããããæå°éã«æããŠãã ããã
- ãã©ãŠã¶ã®äºææ§ïŒ ã¿ãŒã²ãããšãããã©ãŠã¶ã
experimental_Offscreenããã³Reactã³ã³ã«ã¬ã³ãã¢ãŒãã§å¿ èŠãªæ©èœãå®å šã«ãµããŒãããŠããããšã確èªããŠãã ãããå€ããã©ãŠã¶ã§ã¯ãããªãã£ã«ã代æ¿ã¢ãããŒããå¿ èŠã«ãªãå ŽåããããŸãã
React Nativeã«ãããexperimental_Offscreen
experimental_Offscreenã®ååã¯React Nativeã«ãé©çšã§ããŸãããå®è£
ã®è©³çްã¯ç°ãªãå ŽåããããŸããReact Nativeã§ã¯ã以äžã®ãããªãã¯ããã¯ã䜿çšããŠåæ§ã®ããã¯ã°ã©ãŠã³ãã¬ã³ããªã³ã°å¹æãéæã§ããŸãïŒ
React.memoïŒ å€æŽãããŠããªãã³ã³ããŒãã³ãã®äžèŠãªåã¬ã³ããªã³ã°ãé²ãããã«React.memoã䜿çšããŸããuseMemoãšuseCallbackïŒ ãããã®ããã¯ã䜿çšããŠãã³ã¹ãã®ãããèšç®ã颿°å®çŸ©ãã¡ã¢åããäžèŠãªåå®è¡ãé²ããŸããFlatListãšSectionListïŒ çŸåšè¡šç€ºãããŠããã¢ã€ãã ã®ã¿ãã¬ã³ããªã³ã°ããããšã§ãå€§èŠæš¡ãªãªã¹ããã°ãªãããå¹ççã«ã¬ã³ããªã³ã°ããããã«ãããã®ã³ã³ããŒãã³ãã䜿çšããŸãã- JavaScript WorkersãŸãã¯ãã€ãã£ãã¢ãžã¥ãŒã«ã«ãããªãã¹ã¬ããåŠçïŒ èšç®éã®å€ãã¿ã¹ã¯ãJavaScript WorkersãŸãã¯ãã€ãã£ãã¢ãžã¥ãŒã«ã䜿çšããŠå¥ã®ã¹ã¬ããã«ãªãããŒãããã¡ã€ã³ã¹ã¬ããããããã¯ããã®ãé²ããŸãã
React Nativeã«ã¯ãŸã experimental_Offscreenã®çŽæ¥çãªåçæ©èœã¯ãããŸãããããããã®ãã¯ããã¯ã¯ãäžèŠãªåã¬ã³ããªã³ã°ãåæžããã³ã¹ãã®ãããèšç®ãããã¯ã°ã©ãŠã³ãã«ãªãããŒãããããšã§ãåæ§ã®ããã©ãŒãã³ã¹åäžãéæããã®ã«åœ¹ç«ã¡ãŸãã
åœéçãªå®è£ äŸ
experimental_Offscreenãšããã¯ã°ã©ãŠã³ãã¬ã³ããªã³ã°ã®ååã¯ãããŸããŸãªæ¥çãå°åã®ã¢ããªã±ãŒã·ã§ã³ã«é©çšã§ããŸãã以äžã«ããã€ãã®äŸã瀺ããŸãïŒ
- Eã³ããŒã¹ïŒã°ããŒãã«ïŒïŒ ããé«éãªããã²ãŒã·ã§ã³ã®ããã«ãåå詳现ããŒãžãããã¯ã°ã©ãŠã³ãã§äºåã«ã¬ã³ããªã³ã°ããŸããç°ãªãèšèªããŒãžã§ã³ããªãã¹ã¯ãªãŒã³ã§äºåã«ã¬ã³ããªã³ã°ããããšã§ãããŒã«ã©ã€ãºãããååæ å ±ïŒé貚ãèšèªãé éãªãã·ã§ã³ïŒãã¹ã ãŒãºã«è¡šç€ºããŸãã
- éèããã·ã¥ããŒãïŒåç±³ããšãŒããããã¢ãžã¢ïŒïŒ ã€ã³ã¿ã©ã¯ãã£ããªããŒã¿èŠèŠåã®ããã«ãè€éãªéèãã£ãŒãããªãã¹ã¯ãªãŒã³ã§äºåã«èšç®ã»ã¬ã³ããªã³ã°ããŸãããªã¢ã«ã¿ã€ã ã®åžå ŽããŒã¿æŽæ°ãããã©ãŒãã³ã¹ã®é å»¶ãåŒãèµ·ããããšãªã衚瀺ãããããã«ããŸãã
- ãœãŒã·ã£ã«ã¡ãã£ã¢ãã©ãããã©ãŒã ïŒå šäžçïŒïŒ ã·ãŒã ã¬ã¹ãªã¹ã¯ããŒã«äœéšã®ããã«ããã¥ãŒã¹ãã£ãŒãã®ã³ã³ãã³ããããã¯ã°ã©ãŠã³ãã§ããªãã§ããã»ã¬ã³ããªã³ã°ããŸãããã©ãããã©ãŒã ã®ç°ãªãã»ã¯ã·ã§ã³ïŒäŸïŒãããã£ãŒã«ãã°ã«ãŒããã¡ãã»ãŒãžïŒéã®ã¹ã ãŒãºãªãã©ã³ãžã·ã§ã³ãå®è£ ããŸãã
- æ è¡äºçŽãµã€ãïŒã°ããŒãã«ïŒïŒ ããéãå¿çæéã®ããã«ããã©ã€ããããã«ã®æ€çŽ¢çµæãããã¯ã°ã©ãŠã³ãã§ããªããŒãããŸããã€ã³ã¿ã©ã¯ãã£ããªå°å³ãç®çå°ã¬ã€ããå¹ççã«è¡šç€ºããŸãã
- ãªã³ã©ã€ã³æè²ãã©ãããã©ãŒã ïŒã¢ãžã¢ãã¢ããªã«ãåç±³ïŒïŒ ããã¹ã ãŒãºãªåŠç¿äœéšã®ããã«ãã€ã³ã¿ã©ã¯ãã£ããªåŠç¿ã¢ãžã¥ãŒã«ãè©äŸ¡ãããã¯ã°ã©ãŠã³ãã§äºåã«ã¬ã³ããªã³ã°ããŸãããŠãŒã¶ãŒã®èšèªãæåçãªå¥œã¿ã«åºã¥ããŠãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãé©å¿ãããŸãã
çµè«
experimental_Offscreenã¯ãReactã®ããã©ãŒãã³ã¹æé©åã«ããã倧ããªäžæ©ã§ããããã¯ã°ã©ãŠã³ãã¬ã³ããªã³ã°ã掻çšããããšã§ãéçºè
ã¯è€éãªã¢ããªã±ãŒã·ã§ã³ã§ããããå¿çæ§ãé«ãé
åçãªãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãäœæã§ããŸããAPIã¯ãŸã å®éšçã§ããããã®æœåšçãªå©ç¹ã¯åŠå®ã§ããŸããããã®ã¬ã€ãã§æŠèª¬ããæŠå¿µãå®è£
ã®è©³çްããã¹ããã©ã¯ãã£ã¹ãçè§£ããããšã§ãexperimental_Offscreenã®æ¢æ±ãéå§ãããã®åãæŽ»çšããŠReactã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸãã培åºçã«ãã¹ãããAPIãé²åããã«ã€ããŠã³ãŒããé©å¿ãããæºåãå¿ããªãã§ãã ããã
Reactãšã³ã·ã¹ãã ãé²åãç¶ããäžã§ãexperimental_Offscreenã®ãããªããŒã«ã¯ãåè¶ãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸããäžã§ãŸããŸãéèŠãªåœ¹å²ãæããã§ããããåžžã«æ
å ±ãå
¥æãããããã®é²æ©ãåãå
¥ããããšã§ãéçºè
ã¯ããŠãŒã¶ãŒã®å Žæãããã€ã¹ã«é¢ä¿ãªããã¢ããªã±ãŒã·ã§ã³ãããã©ãŒãã³ã¹ãé«ããå¿çæ§ãè¯ããæ¥œãã䜿ããããšãä¿èšŒã§ããŸãã